package com.wiki4j.gdo;

import java.io.Reader;
import java.util.List;
import java.util.Map;

public interface GDOType extends GDType{
  public GDProperty getProperty(String propertyName);

  public Map<String,GDProperty> getProperties();

  public void setProperty(String propertyName,GDProperty property);

  public void setProperty(String propertyName,GDType type);

  public void setProperty(String propertyName,GDType type,int arrayDim);

  public GDOType addGDO(String propertyName);

  public GDOType addGDO(String propertyName,int arrayDim);

  public GDObject toGDObject(Object src);

  public Object fromGDObject(GDObject value);

  public List<?> toList(Object src);

  public Object fromList(List<?> value);

  public GDObject create();

  public GDObject readGDO(String json);

  public GDObject read(Reader reader);
}
